home *** CD-ROM | disk | FTP | other *** search
/ Amiga News 95 / Amiga News 95.iso / dpat / dpat13 / sources / sources.lha / win_stat.c < prev   
Encoding:
C/C++ Source or Header  |  1992-09-14  |  14.4 KB  |  416 lines

  1.  
  2. #ifndef WIN_STAT_C
  3. #define WIN_STAT_C
  4. /*
  5. **      $Filename: Win_stat.c $
  6. **      $Revision: 1.12 $
  7. **      $Release: 2.21 $
  8. **      $Date: 92/09/14 $
  9. **
  10. **
  11. **      (C) Copyright 1992 David Scrève
  12. **          All Rights Reserved
  13. */
  14.  
  15.  
  16.  
  17. #define GD_Gadget20                             20
  18. #define GD_Gadget21                             21
  19. #define GD_Gadget22                             22
  20. #define GD_Gadget23                             23
  21. #define GD_Gadget24                             24
  22. #define GD_Gadget25                             25
  23. #define GD_Gadget26                             26
  24. #define GD_Gadget27                             27
  25. #define GD_Gadget28                             28
  26. #define GD_Gadget29                             29
  27. #define GD_Gadget30                             30
  28.  
  29. #define GD_Gadget54                             54
  30. #define GD_Gadget55                             55
  31. #define GD_Gadget56                             56
  32. #define GD_Gadget57                             57
  33.  
  34. #include <exec/types.h>
  35. #include <intuition/intuition.h>
  36. #include <intuition/gadgetclass.h>
  37. #include <libraries/gadtools.h>
  38. #include <graphics/displayinfo.h>
  39.  
  40. #include "EXMessages.h"
  41. #include "structures.h"
  42. #include "EXvariables_globales.h"
  43. #include "EXvisual_global.h"
  44.  
  45. /* Données pour Intuition */
  46.  
  47. struct Window        *stat_Wnd        = 0l;
  48. struct Gadget        *stat_GList      = 0l;
  49. struct Gadget        *stat_Gadgets[14];
  50.  
  51. extern struct Screen        *Scr;
  52. extern APTR                  VisualInfo;
  53. extern struct TextAttr topaz8;
  54. extern struct Menu *Menus;
  55.  
  56.  
  57. struct TagItem    stat_WindowTags[] = {
  58.     WA_Left,          0,
  59.     WA_Top,           11,
  60.     WA_Width,         640,
  61.     WA_Height,        245,
  62.     WA_IDCMP,         IDCMP_MOUSEBUTTONS|IDCMP_MOUSEMOVE|IDCMP_GADGETDOWN|IDCMP_GADGETUP|IDCMP_CLOSEWINDOW|IDCMP_INTUITICKS|IDCMP_REFRESHWINDOW|IDCMP_MENUPICK,
  63.     WA_Flags,         WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
  64.     WA_Gadgets,       0l,
  65.     WA_Title,         (ULONG)&message[150][0],
  66.     WA_ScreenTitle,   (ULONG)&AppliTitle,
  67.     WA_CustomScreen,  0l,
  68.     WA_MinWidth,      67,
  69.     WA_MinHeight,     21,
  70.     WA_MaxWidth,      640,
  71.     WA_MaxHeight,     256,
  72.     TAG_DONE };
  73.  
  74.  
  75. long stat_InitStuff( void )
  76. {
  77.     struct NewGadget     ng;
  78.     struct Gadget       *g;
  79.  
  80.  
  81.     stat_WindowTags[ 9 ].ti_Data = (ULONG)Scr;
  82.  
  83.  
  84.     if ( NOT( g = (struct Gadget *)CreateContext( &stat_GList )))
  85.         return( 3l );
  86.  
  87.     ng.ng_LeftEdge        =    132;
  88.     ng.ng_TopEdge         =    223;
  89.     ng.ng_Width           =    96;
  90.     ng.ng_Height          =    12;
  91.     ng.ng_GadgetText      =    &message[151][0];
  92.     ng.ng_TextAttr        =    &topaz8;
  93.     ng.ng_GadgetID        =    GD_Gadget23;
  94.     ng.ng_Flags           =    PLACETEXT_LEFT;
  95.     ng.ng_VisualInfo      =    VisualInfo;
  96.  
  97.     g = (struct Gadget *)CreateGadget( NUMBER_KIND, g, &ng,GTNM_Border,TRUE, TAG_DONE );
  98.  
  99.     stat_Gadgets[ 3 ] = g;
  100.  
  101.     ng.ng_LeftEdge        =    131;
  102.     ng.ng_TopEdge         =    110;
  103.     ng.ng_Width           =    92;
  104.     ng.ng_GadgetID        =    GD_Gadget24;
  105.  
  106.     g = (struct Gadget *)CreateGadget( NUMBER_KIND, g, &ng,GTNM_Border,TRUE, TAG_DONE );
  107.  
  108.     stat_Gadgets[ 4 ] = g;
  109.  
  110.     ng.ng_LeftEdge        =    547;
  111.     ng.ng_TopEdge         =    222;
  112.     ng.ng_Width           =    62;
  113.     ng.ng_GadgetText      =    &message[152][0];
  114.     ng.ng_GadgetID        =    GD_Gadget26;
  115.  
  116.     g = (struct Gadget *)CreateGadget( NUMBER_KIND, g, &ng, GTNM_Number, adherent.NbCommandes, GTNM_Border, TRUE, TAG_DONE );
  117.  
  118.     stat_Gadgets[ 6 ] = g;
  119.  
  120.     ng.ng_LeftEdge        =    300;
  121.     ng.ng_TopEdge         =    223;
  122.     ng.ng_Width           =    110;
  123.     ng.ng_GadgetText      =    &message[153][0];
  124.     ng.ng_GadgetID        =    GD_Gadget28;
  125.  
  126.     g = (struct Gadget *)CreateGadget( NUMBER_KIND, g, &ng, GTNM_Number, adherent.age, GTNM_Border, TRUE, TAG_DONE );
  127.  
  128.     stat_Gadgets[ 7 ] = g;
  129.  
  130.     ng.ng_LeftEdge        =    547;
  131.     ng.ng_TopEdge         =    190;
  132.     ng.ng_Width           =    62;
  133.     ng.ng_GadgetText      =    &message[154][0];
  134.     ng.ng_GadgetID        =    GD_Gadget29;
  135.  
  136.     g = (struct Gadget *)CreateGadget( NUMBER_KIND, g, &ng, GTNM_Number, adherent.NbPrgEmp, GTNM_Border, TRUE, TAG_DONE );
  137.  
  138.     stat_Gadgets[ 8 ] = g;
  139.  
  140.     ng.ng_LeftEdge        =    300;
  141.     ng.ng_TopEdge         =    191;
  142.     ng.ng_Width           =    109;
  143.     ng.ng_GadgetText      =    &message[155][0];
  144.     ng.ng_GadgetID        =    GD_Gadget30;
  145.  
  146.     g = (struct Gadget *)CreateGadget( TEXT_KIND, g, &ng, GTTX_Text,&adherent.prenom, GTTX_Border, TRUE, GTTX_Text, TRUE, TAG_DONE );
  147.  
  148.     stat_Gadgets[ 9 ] = g;
  149.  
  150.     ng.ng_Width           =    192;
  151.     ng.ng_GadgetText      =    0l;
  152.     ng.ng_GadgetID        =    GD_Gadget57;
  153.     ng.ng_Flags           =    0;
  154.  
  155.     g = (struct Gadget *)CreateGadget( STRING_KIND, g, &ng, GTST_MaxChars, 256, TAG_DONE );
  156.  
  157.     stat_Gadgets[ 13 ] = g;
  158.  
  159.     ng.ng_LeftEdge        =    416;
  160.     ng.ng_TopEdge         =    26;
  161.     ng.ng_Height          =    115;
  162.     ng.ng_GadgetText      =    &message[156][0];
  163.     ng.ng_GadgetID        =    GD_Gadget25;
  164.     ng.ng_Flags           =    PLACETEXT_ABOVE|NG_HIGHLABEL;
  165.  
  166.     g = (struct Gadget *)CreateGadget( LISTVIEW_KIND, g, &ng, GTLV_Labels, &Gadget5List, GTLV_ShowSelected, stat_Gadgets[13], TAG_DONE );
  167.  
  168.     stat_Gadgets[ 5 ] = g;
  169.  
  170.     ng.ng_Width           =    208;
  171.     ng.ng_Height          =    12;
  172.     ng.ng_GadgetText      =    0l;
  173.     ng.ng_GadgetID        =    GD_Gadget56;
  174.     ng.ng_Flags           =    0;
  175.  
  176.     g = (struct Gadget *)CreateGadget( STRING_KIND, g, &ng, GTST_MaxChars, 256, TAG_DONE );
  177.  
  178.     stat_Gadgets[ 12 ] = g;
  179.  
  180.     ng.ng_LeftEdge        =    17;
  181.     ng.ng_TopEdge         =    25;
  182.     ng.ng_Height          =    79;
  183.     ng.ng_GadgetText      =    &message[157][0];
  184.     ng.ng_GadgetID        =    GD_Gadget22;
  185.     ng.ng_Flags           =    PLACETEXT_ABOVE|NG_HIGHLABEL;
  186.  
  187.     g = (struct Gadget *)CreateGadget( LISTVIEW_KIND, g, &ng, GTLV_Labels, &lstcatList, GTLV_ShowSelected, stat_Gadgets[12], TAG_DONE );
  188.  
  189.     stat_Gadgets[ 2 ] = g;
  190.  
  191.     ng.ng_Width           =    205;
  192.     ng.ng_Height          =    12;
  193.     ng.ng_GadgetText      =    0l;
  194.     ng.ng_GadgetID        =    GD_Gadget54;
  195.     ng.ng_Flags           =    0;
  196.  
  197.     g = (struct Gadget *)CreateGadget( STRING_KIND, g, &ng, GTST_MaxChars, 256, TAG_DONE );
  198.  
  199.     stat_Gadgets[ 10 ] = g;
  200.  
  201.     ng.ng_LeftEdge        =    22;
  202.     ng.ng_TopEdge         =    139;
  203.     ng.ng_Height          =    77;
  204.     ng.ng_GadgetText      =    &message[158][0];
  205.     ng.ng_GadgetID        =    GD_Gadget20;
  206.     ng.ng_Flags           =    PLACETEXT_ABOVE|NG_HIGHLABEL;
  207.  
  208.     g = (struct Gadget *)CreateGadget( LISTVIEW_KIND, g, &ng, GTLV_Labels, &lstprgcatList, GTLV_ShowSelected, stat_Gadgets[10], TAG_DONE );
  209.  
  210.     stat_Gadgets[ 0 ] = g;
  211.  
  212.     ng.ng_Width           =    163;
  213.     ng.ng_Height          =    12;
  214.     ng.ng_GadgetText      =    0l;
  215.     ng.ng_GadgetID        =    GD_Gadget55;
  216.     ng.ng_Flags           =    0;
  217.  
  218.     g = (struct Gadget *)CreateGadget( STRING_KIND, g, &ng, GTST_MaxChars, 256, TAG_DONE );
  219.  
  220.     stat_Gadgets[ 11 ] = g;
  221.  
  222.     ng.ng_LeftEdge        =    240;
  223.     ng.ng_TopEdge         =    25;
  224.     ng.ng_Height          =    155;
  225.     ng.ng_GadgetText      =    &message[159][0];
  226.     ng.ng_GadgetID        =    GD_Gadget21;
  227.     ng.ng_Flags           =    PLACETEXT_ABOVE|NG_HIGHLABEL;
  228.  
  229.     g = (struct Gadget *)CreateGadget( LISTVIEW_KIND, g, &ng, GTLV_Labels, &Gadget6List, GTLV_ShowSelected, stat_Gadgets[11], TAG_DONE );
  230.  
  231.     stat_Gadgets[ 1 ] = g;
  232.  
  233.     if ( NOT g )
  234.         return( 4l );
  235.  
  236.     stat_WindowTags[ 6 ].ti_Data = (ULONG)stat_GList;
  237.  
  238.     if ( NOT( stat_Wnd = (struct Window *)OpenWindowTagList( 0l, stat_WindowTags )))
  239.         return( 5l );
  240.  
  241.     SetMenuStrip( stat_Wnd, Menus );
  242.     GT_RefreshWindow( stat_Wnd, 0l );
  243.  
  244.     return( 0l );
  245. }
  246.  
  247. void stat_CleanStuff( void )
  248. {
  249.     if ( Menus      )
  250.         ClearMenuStrip( stat_Wnd );
  251.  
  252.  
  253.     if ( stat_Wnd        )
  254.         CloseWindow( stat_Wnd );
  255.  
  256.     if ( stat_GList      )
  257.         FreeGadgets( stat_GList );
  258.  
  259. }
  260.  
  261. BOOL stat_UpDateGadgets(adhrnt)
  262. struct adhrent adhrnt;
  263. {
  264.  LONG age;
  265.  BOOL resultat;
  266.  
  267.  GT_SetGadgetAttrs(stat_Gadgets[9],stat_Wnd,NULL,GTTX_Text, &adhrnt.prenom, TAG_DONE);
  268.  age=NbAnnees(adhrnt.age);
  269.  GT_SetGadgetAttrs(stat_Gadgets[7],stat_Wnd,NULL,GTNM_Number,age , TAG_DONE);
  270.  GT_SetGadgetAttrs(stat_Gadgets[8],stat_Wnd,NULL,GTNM_Number,adhrnt.NbPrgEmp, TAG_DONE);
  271.  GT_SetGadgetAttrs(stat_Gadgets[6],stat_Wnd,NULL,GTNM_Number,adhrnt.NbCommandes , TAG_DONE);
  272.  
  273.  EmptyList((struct List *)&Gadget5List);
  274.  if(resultat=FillListPrgadherent((struct List *)&Gadget5List,adhrnt.nom))
  275.          GT_SetGadgetAttrs(stat_Gadgets[5],stat_Wnd,NULL,GTLV_Labels, &Gadget5List, TAG_DONE);
  276.  return(resultat);
  277. }
  278.  
  279. LONG ModStatistiques()
  280. {
  281.  BOOL close_me;
  282.  ULONG class;
  283.  ULONG code;
  284.  APTR address;
  285.  struct IntuiMessage *my_message;
  286.  BOOL complete = FALSE;
  287.  BOOL error=FALSE;
  288.  LONG result;
  289.  LONG resultat=NULL;
  290.  struct MenuItem *item;
  291.  struct Gadget *gad;
  292.  char CateName[STD_STRING_LEN],program[STD_STRING_LEN],adhe[STD_STRING_LEN];
  293.  char ProgEmpAdhe[STD_STRING_LEN];
  294.  struct adhrent AdhHeader;
  295.  struct CateHeader CateHead;
  296.  
  297.  EmptyList(&lstprgdiskList);
  298.  EmptyList(&lstprgcatList);
  299.  CateName[0]=0;
  300.  program[0]=0;
  301.  adhe[0]=0;
  302.  ProgEmpAdhe[0]=0;
  303.  stat_Wnd=0l;
  304.  stat_GList=0l;
  305.  
  306.  if (ListFull(AdherentDir,(struct List *)&Gadget6List))
  307.     {
  308.      result=stat_InitStuff();
  309.      if (result==NULL);
  310.         {
  311.          close_me = FALSE;
  312.          while(!close_me)
  313.            {
  314.             Wait( 1 << stat_Wnd->UserPort->mp_SigBit );
  315.             while(my_message=(struct IntuiMessage *)GT_GetIMsg( stat_Wnd->UserPort))
  316.                {
  317.                 class = my_message->Class;
  318.                 code = my_message->Code;
  319.                 address=my_message->IAddress;
  320.                 GT_ReplyIMsg( (struct IntuiMessage *)my_message );
  321.                 switch( class )
  322.                   {
  323.                    case IDCMP_CLOSEWINDOW:
  324.                        if (close_me=OldDoubleRequest(stat_Wnd,message[46],message[128],FALSE))
  325.                             resultat=MOD_QUIT;
  326.                      break;
  327.  
  328.                    case IDCMP_GADGETUP :
  329.                         gad=address;
  330.                         switch (gad->GadgetID)
  331.                            {
  332.                             case GD_Gadget54 :
  333.                                 GT_SetGadgetAttrs(stat_Gadgets[10],stat_Wnd,NULL,GTST_String,&program[0],TAG_DONE );
  334.                                break;
  335.  
  336.                              case GD_Gadget55 :
  337.                                 GT_SetGadgetAttrs(stat_Gadgets[11],stat_Wnd,NULL,GTST_String,&adhe[0],TAG_DONE );
  338.                                break;
  339.  
  340.                              case GD_Gadget56 :
  341.                                 GT_SetGadgetAttrs(stat_Gadgets[12],stat_Wnd,NULL,GTST_String,&CateName[0],TAG_DONE );
  342.                                break;
  343.  
  344.                              case GD_Gadget57 :
  345.                                 GT_SetGadgetAttrs(stat_Gadgets[13],stat_Wnd,NULL,GTST_String,&ProgEmpAdhe[0],TAG_DONE );
  346.                                break;
  347.  
  348.                              case GD_Gadget20 :
  349.                                 strcpy(program,((struct StringInfo *)stat_Gadgets[10]->SpecialInfo)->Buffer);
  350.                                 if (!(error=((result=RecherchePrgCat(program,CateName))==-1)))
  351.                                     {
  352.                                      NbEmprunts=nombremprunts(result);
  353.                                      error=(NbEmprunts==-1);
  354.                                      if (!error)
  355.                                         GT_SetGadgetAttrs(stat_Gadgets[3],stat_Wnd,NULL,GTNM_Number, NbEmprunts, TAG_DONE);
  356.                                     }
  357.                                break;
  358.  
  359.                              case GD_Gadget21 :
  360.                                     strcpy(adhe,((struct StringInfo *)stat_Gadgets[11]->SpecialInfo)->Buffer);
  361.                                     if  (ReadAdheHeader(adhe,(struct adhrent *)&AdhHeader))
  362.                                            error=!stat_UpDateGadgets(AdhHeader);
  363.                                   break;
  364.  
  365.                              case GD_Gadget22 :
  366.                                 strcpy(CateName,((struct StringInfo *)stat_Gadgets[12]->SpecialInfo)->Buffer);
  367.                                 EmptyList((struct List *)&lstprgcatList);
  368.                                 if(!(error=!FillListPrgCat((struct List *)&lstprgcatList,CateName)))
  369.                                           {
  370.                                            GT_SetGadgetAttrs(stat_Gadgets[0],stat_Wnd,NULL,GTLV_Labels, &lstprgcatList, GTLV_Selected,1,TAG_DONE);
  371.                                            strcpy(program,((struct StringInfo *)stat_Gadgets[10]->SpecialInfo)->Buffer);
  372.                                            if (!(error=((result=RecherchePrgCat(program,CateName))==-1)))
  373.                                               {
  374.                                                NbEmprunts=nombremprunts(result);
  375.                                                error=(NbEmprunts==-1);
  376.                                                if (!error)
  377.                                                    GT_SetGadgetAttrs(stat_Gadgets[3],stat_Wnd,NULL,GTNM_Number, NbEmprunts, TAG_DONE);
  378.                                               }
  379.                                           }
  380.                                 if (!(error=!ReadCateHeader(CateName,&CateHead)));
  381.                                      GT_SetGadgetAttrs(stat_Gadgets[4],stat_Wnd,NULL,GTNM_Number,CateHead.nb_emprunts , TAG_DONE);
  382.                                break;
  383.  
  384.                              }
  385.                        break;
  386.  
  387.                    case IDCMP_REFRESHWINDOW:
  388.                          GT_BeginRefresh(stat_Wnd);
  389.                          GT_EndRefresh(stat_Wnd,complete);
  390.                        break;
  391.  
  392.                    case IDCMP_MENUPICK:
  393.                          item=(struct MenuItem *)ItemAddress(Menus,code);
  394.                          if (item!=NULL)
  395.                              {
  396.                               resultat=ManageMenus(code,stat_Wnd);
  397.                               close_me=(resultat!=CHANGE_LANGUAGE && resultat!=NULL && resultat!=MOD_STATISTIQUES);
  398.                               if (resultat==CHANGE_LANGUAGE)
  399.                                   {
  400.                                    stat_CleanStuff();
  401.                                    result=stat_InitStuff();
  402.                                   }
  403.                              }
  404.                        break;
  405.                   }
  406.                }
  407.            }
  408.         }
  409.      stat_CleanStuff();
  410.     }
  411.  EmptyList((struct List *)&Gadget6List);
  412.  return(resultat);
  413. }
  414.  
  415.  
  416. #endif  /* WIN_STAT_C */